package br.com.insight.consultoria.apresentacao.curriculo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.event.ActionEvent;

import br.com.insight.consultoria.apresentacao.messagebean.InsightMB;
import br.com.insight.consultoria.entity.InformacoesAcademicas;
import br.com.insight.consultoria.entity.TipoEspecifico;
import br.com.insight.consultoria.entity.Usuario;
import br.com.insight.consultoria.erro.exception.InsightException;
import br.com.insight.consultoria.negocio.fachada.informacoesacademicas.FachadaInformacoesAcademicas;
import br.com.insight.consultoria.negocio.fachada.tipo.FachadaTipo;
import br.com.insight.consultoria.negocio.fachada.tipoEspecifico.FachadaTipoEspecifico;
import br.com.insight.consultoria.negocio.fachada.usuariopadrao.FachadaUsuarioPadrao;

public class CurriculoFormacaoAcademicaMB extends InsightMB{
	
	private FachadaInformacoesAcademicas fachadaInformacoesAcademicas;
	private FachadaTipo fachadaTipo;
	private FachadaTipoEspecifico fachadaTipoEspecifico;
	private FachadaUsuarioPadrao fachadaUsuarioPadrao;
	private InformacoesAcademicas academicas;
	private TipoEspecifico idTipoEspecificoFormacaoAcademica;

	public void inserirFormacaoAcademica(ActionEvent e) throws InsightException{
		academicas.setTipoEspecifico(idTipoEspecificoFormacaoAcademica);
		getFachadaInformacoesAcademicas().inserir(academicas);
		setIdTipoEspecificoFormacaoAcademica(new TipoEspecifico());
		setAcademicas(new InformacoesAcademicas());
	}
	
	public void excluirFormacaoAcademica(ActionEvent e) throws InsightException{
		getFachadaInformacoesAcademicas().excluir(academicas);
	}
	
	public void carregaFormacaoAcademica(ActionEvent e) throws InsightException{
		setAcademicas(getFachadaInformacoesAcademicas().getInformacoesAcademicas(academicas.getId()));
		setIdTipoEspecificoFormacaoAcademica(getAcademicas().getTipoEspecifico());
		
	}
	
	private void setAcademicas(InformacoesAcademicas academicas) {
		this.academicas = academicas;
	}

	public InformacoesAcademicas getAcademicas() {
		Usuario usuario=new Usuario();
		usuario.setId(new Long("12345678901"));
		if(academicas==null)
			academicas=new InformacoesAcademicas();
		academicas.setUsuario(usuario);
		return academicas;
	}

	public FachadaInformacoesAcademicas getFachadaInformacoesAcademicas() {
		return fachadaInformacoesAcademicas;
	}

	public void setFachadaInformacoesAcademicas(
			FachadaInformacoesAcademicas fachadaInformacoesAcademicas) {
		this.fachadaInformacoesAcademicas = fachadaInformacoesAcademicas;
	}

	public FachadaTipo getFachadaTipo() {
		return fachadaTipo;
	}

	public void setFachadaTipo(FachadaTipo fachadaTipo) {
		this.fachadaTipo = fachadaTipo;
	}

	public FachadaTipoEspecifico getFachadaTipoEspecifico() {
		return fachadaTipoEspecifico;
	}

	public void setFachadaTipoEspecifico(FachadaTipoEspecifico fachadaTipoEspecifico) {
		this.fachadaTipoEspecifico = fachadaTipoEspecifico;
	}

	public FachadaUsuarioPadrao getFachadaUsuarioPadrao() {
		return fachadaUsuarioPadrao;
	}

	public void setFachadaUsuarioPadrao(FachadaUsuarioPadrao fachadaUsuarioPadrao) {
		this.fachadaUsuarioPadrao = fachadaUsuarioPadrao;
	}
	
	public TipoEspecifico getIdTipoEspecificoFormacaoAcademica() {
		if(idTipoEspecificoFormacaoAcademica==null)
			idTipoEspecificoFormacaoAcademica=new TipoEspecifico();
		return idTipoEspecificoFormacaoAcademica;
	}

	public void setIdTipoEspecificoFormacaoAcademica(
			TipoEspecifico idTipoEspecificoFormacaoAcademica) {
		this.idTipoEspecificoFormacaoAcademica = idTipoEspecificoFormacaoAcademica;
	}

	public Map<String, Object> getListaTipoEspecificoEscolaridade() throws InsightException{
		Map<String, Object> escolaridade=new HashMap<String, Object>();
		for(TipoEspecifico especifico: getFachadaTipoEspecifico().listarTipoEspecifico(getFachadaTipo().getTipo(new Long(4)))){
			escolaridade.put(especifico.getTipoEspecifico(), especifico.getId());
		}
		return escolaridade;
	}
	
	public List<InformacoesAcademicas> getListaFormacaoAcademica() throws InsightException{
		
		Usuario usuario=new Usuario();
		usuario.setId(new Long("12345678901"));
		
		List<InformacoesAcademicas> listaformacao=new ArrayList<InformacoesAcademicas>();
		for(InformacoesAcademicas academicas: getFachadaInformacoesAcademicas().pesquisar(usuario)){
			listaformacao.add(academicas);
		}
		return listaformacao;
	}
	
}
